package com.lagou.java;

import java.util.Random;

public class MyArray {

    private int[][] arr = new int[16][16];

    public MyArray(int[][] arr) {
        this.arr = arr;
    }

    /*  */
    public MyArray(int value) {
        setAllArrayValue(value);
    }

    public MyArray() {
    }

    public int[][] getArr() {
        return arr;
    }

    public void setArr(int[][] arr) {
        this.arr = arr;
    }

    /*
    *   指定所有位置的元素值,并返回二维数组
    * */
    public void setAllArrayValue(int value){
        for (int i = 0; i < this.arr.length; i++) {
            for (int j = 0; j < this.arr.length; j++) {
                this.arr[i][j] = value;
            }
        }
    }

    /* 二维数组随机生成0——指定数字bound的范围内的值 */
    public void setAllArrayRandomValue(int bound){
        Random random = new Random();
        for (int i = 0; i < this.arr.length; i++) {
            for (int j = 0; j < this.arr.length; j++) {
                this.arr[i][j] = random.nextInt(bound) + 1;
            }
        }
    }

    /* 指定下标为i和j的二维数组元素的值 */
    public void setArrayValue(int i, int j, int value){
        if (i>= 0 && i <this.arr.length && j>= 0 && j <this.arr.length) {
            this.arr[i][j] = value;
        } else {
            System.out.println("输入下标不合法！");
        }
    }

    private void showCount(int count){
        System.out.println("打印的累加和为：" + count);
    }

    private void showCount(int count, MyArrayEnum myArrayEnum){
        System.out.println(myArrayEnum.getValue() + "打印的累加和为：" + count);
    }

    public void showArray(int[][] arr){
        for (int[] ints : arr) {
            for (int j = 0; j < arr.length; j++) {
                System.out.print(ints[j] + "\t");
            }
            System.out.println();
        }
    }

    /* 计算二维数组所有元素的累加和 */
//    public void subAllValue(int[][] arr){
//        int count = 0;
//        for (int[] ints : arr) {
//            for (int j = 0; j < arr.length; j++) {
//                count += ints[j];
//            }
//        }
//        showCount(count);
//    }

//    public void subLeftToRightValue(){
//        int count = 0;
//        for (int i = 0; i < arr.length; i++) {
//            for (int j = 0; j < arr.length; j++) {
//                if (i == j) {
//                    count += arr[i][j];
//                }
//            }
//        }
//        showCount(count);
//    }

//    public void subRightToLeftValue(){
//        int count = 0;
//        for (int i = 0; i < arr.length; i++) {
//            for (int j = 0; j < arr.length; j++) {
//                if (arr.length == i + j) {
//                    count += arr[i][j];
//                }
//            }
//        }
//        showCount(count);
//    }

    /* 计算二维数组元素的累加和,ALL */
    public void subAllValue(int[][] arr, MyArrayEnum myArrayEnum){
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                switch (myArrayEnum) {
                    case ALL:count += arr[i][j];break;
                    case LEFTTORIGHT:
                        if (i == j){
                            count += arr[i][j];
                        }
                        break;
                    case RIGHTTOLEFT:
                        if (arr.length-1 == i + j) {
                            count += arr[i][j];
                        }
                        break;
                }
            }
        }
        showCount(count, myArrayEnum);
    }
}
